#ifndef __MY__UTIL__
#define __MY__UTIL__
#include <experimental/filesystem>
#include <iostream>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <ctime>
#include <string>
#include <thread>

/*
    Util：
        通用接口的封装
*/

namespace Log
{
    using std::string;
    namespace fs = std::experimental::filesystem;
    class Util
    {
    public:
        // 获取当前系统时间
        static time_t now()
        {
            return time(nullptr);
        }

        // 判断文件/文件夹是否存在
        static bool isExist(const string &pathname)
        {
            // 使用stat也可以检测,如果stat成功返回0，则说明存在文件，否则不存在文件
            return fs::exists(pathname);
        }

        // 创建创建目录/多级目录
        // ./a/b/c
        // 如果a,b,不存在则创建a,b,c
        static bool createDirectory(const string& pathname)
        {
            if(isExist(pathname))
                return true;
            return fs::create_directories(pathname);
        }

        // 获取相对路径
        // ./a/a.txt
        // ./a/
        static string path(const string& pathname)
        {
            if(pathname.empty())
                return ".";
            // 查找/ \中的任意一个
            // find_last_of：查找()中的任意一个字符
            // find：查找()中的字符串
            auto pos = pathname.find_last_of("/\\");
            if(pos == string::npos)
                return ".";
              return  pathname.substr(0,pos + 1);
        }
    };

}

#endif